import {initState} from "./state";
import {compileToFunction} from "./compile/index"
export function initMixin(Vue) {
    Vue.prototype._init = function (options) {
        // 数据劫持
        const vm = this;
        vm.$options = options;
        // 初始化状态
        initState(vm);

        // 如果用户传入了el属性，需要见页面渲染出来
        if(vm.$options.el)vm.$mount(vm.$options.el)
    }
    Vue.prototype.$mount = function (el) {
        const vm = this;
        const options = vm.$options;
        el = document.querySelector(el);
        // 默认先查找有没有render方法，没有的话会采用template，template也没有会用el中的内容
        if(!options.render){
            // 对模板进行编译
            let template = options.template;
            if(!template && el){
                template = el.outerHTML;
            }
            const render = compileToFunction(template);
            options.render = render;
        }
    }
}
